<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  const obj = {
    _name:"",
    names:[],
    getName:function(){
      console.log("obj的name被访问了")
      // ...
      return this._name;
    },
    setName:function(val){
      console.log("obj的name被修改了，改成了" + val);
      
      // 拦截到修改的操作后，要执行的其他功能
      this.names.push(val);
      // ...
      this._name = val;
    }
  }

  // 拦截数据的访问的函数封装，叫访问器
  // 拦截数据的修改的函数封装，叫控制器

  // 以上代码（obj的name）称为自定义添加访问器和控制器

  obj.setName("张三")
  
  obj.getName()
  
  console.log(obj.getName())
  
  obj.setName("李四")

  console.log(obj.getName())
  
  console.log(obj.getName())


  console.log(obj.names);
</script>
</html>